﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Data;

namespace DalEx
{
    public class ReadDOS
    {
        /// <summary>
        /// 执行DOS命令，返回DOS命令的输出
        /// </summary>
        /// <param name="dosCommand">dos命令</param>
        /// <param name="milliseconds">等待命令执行的时间（单位：毫秒），如果设定为0，则无限等待</param>
        /// <returns>返回输出，如果发生异常，返回空字符串</returns>
        public static string ExecuteDos(string dosCommand, int milliseconds)
        {
            string output = ""; //输出字符串
            if (dosCommand != null && dosCommand != "")
            {
                Process process = new Process(); //创建进程对象
                ProcessStartInfo startInfo = new ProcessStartInfo();
                startInfo.FileName = "cmd.exe"; //设定需要执行的命令
                startInfo.Arguments = "/C " + dosCommand; //设定参数，其中的“/C”表示执行完命令后马上退出
                startInfo.UseShellExecute = false; //不使用系统外壳程序启动
                startInfo.RedirectStandardInput = false; //不重定向输入
                startInfo.RedirectStandardOutput = true; //重定向输出
                startInfo.CreateNoWindow = true; //不创建窗口
                process.StartInfo = startInfo;
                try
                {
                    if (process.Start()) //开始进程
                    {
                        if (milliseconds == 0)
                            process.WaitForExit(); //这里无限等待进程结束
                        else
                            process.WaitForExit(milliseconds); //这里等待进程结束，等待时间为指定的毫秒
                        output = process.StandardOutput.ReadToEnd();//读取进程的输出
                    }
                }
                catch (Exception ex)
                {
                    output = ex.Message;
                }
                finally
                {
                    if (process != null)
                        process.Close();
                }
            }
            return output;
        }

        public static bool ReadIP(string[] strArrIPS)
        {
            DataSet temp_ds = Dal.ServerIPDal.Select("IP like '%" + strArrIPS[0] + "." + strArrIPS[1] + "." + strArrIPS[2] + "." + "*%'");
            Model.ServerIP model = new Model.ServerIP();
            if (temp_ds.Tables[0].Rows.Count > 0)
            {
                model = new Model.ServerIP(temp_ds.Tables[0].Rows[0]);
                if (model.StateR == 1)
                {
                    if (model.LastTime.ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd"))
                    {
                        model.LastTime = DateTime.Now;
                        Dal.ServerIPDal.Update(model);
                    }
                    return true;
                    //Response.Redirect("../default.aspx");
                }
                else
                {
                    if (model.LastTime.ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd"))
                    {
                        model.LastTime = DateTime.Now;
                        Dal.ServerIPDal.Update(model);
                    }
                    return false;
                    //Response.Redirect("404.aspx");
                }
            }
            else
            {
                temp_ds = Dal.ServerIPDal.Select("IP like '%" + strArrIPS[0] + "." + strArrIPS[1] + "." + strArrIPS[2] + "." + strArrIPS[3] + "%'");
                if (temp_ds.Tables[0].Rows.Count > 0)
                {
                    model = new Model.ServerIP(temp_ds.Tables[0].Rows[0]);
                    if (model.StateR == 1)
                    {
                        if (model.LastTime.ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd"))
                        {
                            model.LastTime = DateTime.Now;
                            Dal.ServerIPDal.Update(model);
                        }
                        return true;
                        //Response.Redirect("../default.aspx");
                    }
                    else
                    {
                        if (model.LastTime.ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd"))
                        {
                            model.LastTime = DateTime.Now;
                            Dal.ServerIPDal.Update(model);
                        }
                        return false;
                        //Response.Redirect("404.aspx");
                    }
                }
                else
                {
                    model = new Model.ServerIP();
                    model.IP = strArrIPS[0] + "." + strArrIPS[1] + "." + strArrIPS[2] + "." + strArrIPS[3];
                    model.LastTime = DateTime.Now;
                    model.StateR = 0;
                    Dal.ServerIPDal.Insert(model);
                    return false;
                    //Response.Redirect("404.aspx");
                }
            }
        }
    }
}
